Micron Document
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
| SparkN0de-git | SparkN0de |
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

Node / ReticulumProjects / Sideband.git / files / sbapp / patches / PythonService.java

Displaying Raw • Download


sbapp/patches/PythonService.java 0de6b2d1d0f7a6035c1df02adb2b934e2baeb3a2 (0de6b2d1) Text, 8.64 KB

Tff7b72package T7ee787org.kivy.androidTb4b4b4;

Tff7b72import T7ee787android.os.BuildTb4b4b4;
Tff7b72import T7ee787java.lang.reflect.MethodTb4b4b4;
Tff7b72import T7ee787java.lang.reflect.InvocationTargetExceptionTb4b4b4;
Tff7b72import T7ee787android.app.ServiceTb4b4b4;
Tff7b72import T7ee787android.os.IBinderTb4b4b4;
Tff7b72import T7ee787android.os.BundleTb4b4b4;
Tff7b72import T7ee787android.content.IntentTb4b4b4;
Tff7b72import T7ee787android.content.ContextTb4b4b4;
Tff7b72import T7ee787android.util.LogTb4b4b4;
Tff7b72import T7ee787android.app.NotificationTb4b4b4;
Tff7b72import T7ee787android.app.PendingIntentTb4b4b4;
Tff7b72import T7ee787android.os.ProcessTb4b4b4;
Tff7b72import T7ee787java.io.FileTb4b4b4;

T8b949e//imports for channel definition
Tff7b72import T7ee787android.app.NotificationManagerTb4b4b4;
Tff7b72import T7ee787android.app.NotificationChannelTb4b4b4;
Tff7b72import T7ee787android.graphics.ColorTb4b4b4;
Tff7b72import T7ee787android.graphics.BitmapFactoryTb4b4b4;
Tff7b72import T7ee787android.graphics.BitmapTb4b4b4;
Tff7b72import T7ee787android.graphics.drawable.IconTb4b4b4;

Tff7b72import T7ee787android.net.wifi.WifiManagerTb4b4b4;
Tff7b72import T7ee787android.net.wifi.WifiManager.MulticastLockTb4b4b4;

Tff7b72import T7ee787java.util.ObjectsTb4b4b4;
Tff7b72import T7ee787android.content.BroadcastReceiverTb4b4b4;

Tff7b72import T7ee787io.unsigned.sideband.ServiceSidebandserviceTb4b4b4;

Tff7b72public Tff7b72class T56d364PythonService Tff7b72extends Te6edf3Service Tff7b72implements Te6edf3Runnable Tb4b4b4{

Tff7b72public Tff7b72static Tff7b72class T56d364ServiceBootReceiver Tff7b72extends Te6edf3BroadcastReceiver Tb4b4b4{
Tf0883e@Override
Tff7b72public Tffa657void Td2a8ffonReceiveTb4b4b4(Te6edf3Context Te6edf3contextTb4b4b4, Te6edf3Intent Te6edf3intentTb4b4b4) Tb4b4b4{
Tff7b72try Tb4b4b4{
Tff7b72if Tb4b4b4(Te6edf3ObjectsTb4b4b4.Te6edf3equalsTb4b4b4(Te6edf3intentTb4b4b4.Te6edf3getActionTb4b4b4(Tb4b4b4)Tb4b4b4, Ta5d6ff"Ta5d6ffandroid.intent.action.BOOT_COMPLETEDTa5d6ff"Tb4b4b4)Tb4b4b4) Tb4b4b4{
Tffa657boolean Te6edf3should_start Tff7b72= Tff7b72falseTb4b4b4;
Te6edf3String Te6edf3app_dir Tff7b72= Te6edf3contextTb4b4b4.Te6edf3getFilesDirTb4b4b4(Tb4b4b4)Tb4b4b4.Te6edf3getParentFileTb4b4b4(Tb4b4b4)Tb4b4b4.Te6edf3getParentTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3String Te6edf3toggle_path Tff7b72= Te6edf3contextTb4b4b4.Te6edf3getFilesDirTb4b4b4(Tb4b4b4)Tff7b72+Ta5d6ff"Ta5d6ff/app_storage/Ta5d6ff"Tb4b4b4;
Te6edf3File Te6edf3file Tff7b72= Tff7b72new Te6edf3FileTb4b4b4(Te6edf3toggle_pathTb4b4b4, Ta5d6ff"Ta5d6ffboot_toggleTa5d6ff"Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3fileTb4b4b4.Te6edf3existsTb4b4b4(Tb4b4b4)Tb4b4b4) Tb4b4b4{ Te6edf3should_start Tff7b72= Tff7b72trueTb4b4b4; Tb4b4b4}
Tff7b72if Tb4b4b4(Te6edf3should_startTb4b4b4) Tb4b4b4{
Te6edf3ServiceSidebandservice Te6edf3svc Tff7b72= Tff7b72new Te6edf3ServiceSidebandserviceTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3svcTb4b4b4.Te6edf3startTb4b4b4(Te6edf3contextTb4b4b4, Te6edf3app_dirTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}
Tb4b4b4} Tff7b72catch Tb4b4b4(Te6edf3Exception Te6edf3eTb4b4b4) Tb4b4b4{ Te6edf3LogTb4b4b4.Te6edf3eTb4b4b4(Ta5d6ff"Ta5d6ffsidebandserviceTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffCould not start Sideband service at boot: Ta5d6ff"Tff7b72+Te6edf3eTb4b4b4)Tb4b4b4; Tb4b4b4}
Tb4b4b4}
Tb4b4b4}

T8b949e// Thread for Python code
Tff7b72private Te6edf3Thread Te6edf3pythonThread Tff7b72= Tff7b72nullTb4b4b4;

T8b949e// Python environment variables
Tff7b72private Te6edf3String Te6edf3androidPrivateTb4b4b4;
Tff7b72private Te6edf3String Te6edf3androidArgumentTb4b4b4;
Tff7b72private Te6edf3String Te6edf3pythonNameTb4b4b4;
Tff7b72private Te6edf3String Te6edf3pythonHomeTb4b4b4;
Tff7b72private Te6edf3String Te6edf3pythonPathTb4b4b4;
Tff7b72private Te6edf3String Te6edf3serviceEntrypointTb4b4b4;
T8b949e// Argument to pass to Python code,
Tff7b72private Te6edf3String Te6edf3pythonServiceArgumentTb4b4b4;


Tff7b72public Tff7b72static Te6edf3PythonService Te6edf3mService Tff7b72= Tff7b72nullTb4b4b4;
Tff7b72private Te6edf3Intent Te6edf3startIntent Tff7b72= Tff7b72nullTb4b4b4;

Tff7b72private Tffa657boolean Te6edf3autoRestartService Tff7b72= Tff7b72falseTb4b4b4;

Tff7b72public Tffa657void Td2a8ffsetAutoRestartServiceTb4b4b4(Tffa657boolean Te6edf3restartTb4b4b4) Tb4b4b4{
Te6edf3autoRestartService Tff7b72= Te6edf3restartTb4b4b4;
Tb4b4b4}

Tff7b72public Tffa657int Td2a8ffstartTypeTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72return Te6edf3START_NOT_STICKYTb4b4b4;
Tb4b4b4}

Tf0883e@Override
Tff7b72public Te6edf3IBinder Td2a8ffonBindTb4b4b4(Te6edf3Intent Te6edf3arg0Tb4b4b4) Tb4b4b4{
Tff7b72return Tff7b72nullTb4b4b4;
Tb4b4b4}

Tf0883e@Override
Tff7b72public Tffa657void Td2a8ffonCreateTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72superTb4b4b4.Te6edf3onCreateTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}

Tf0883e@Override
Tff7b72public Tffa657int Td2a8ffonStartCommandTb4b4b4(Te6edf3Intent Te6edf3intentTb4b4b4, Tffa657int Te6edf3flagsTb4b4b4, Tffa657int Te6edf3startIdTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Te6edf3pythonThread Tff7b72!Tff7b72= Tff7b72nullTb4b4b4) Tb4b4b4{
Te6edf3LogTb4b4b4.Te6edf3vTb4b4b4(Ta5d6ff"Ta5d6ffpython serviceTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffservice exists, do not start againTa5d6ff"Tb4b4b4)Tb4b4b4;
Tff7b72return Te6edf3startTypeTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}
T8b949e//intent is null if OS restarts a STICKY service
Tff7b72if Tb4b4b4(Te6edf3intent Tff7b72=Tff7b72= Tff7b72nullTb4b4b4) Tb4b4b4{
Te6edf3Context Te6edf3context Tff7b72= Te6edf3getApplicationContextTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3intent Tff7b72= Te6edf3getThisDefaultIntentTb4b4b4(Te6edf3contextTb4b4b4, Ta5d6ff"Ta5d6ff"Tb4b4b4)Tb4b4b4;
Tb4b4b4}

Te6edf3startIntent Tff7b72= Te6edf3intentTb4b4b4;
Te6edf3Bundle Te6edf3extras Tff7b72= Te6edf3intentTb4b4b4.Te6edf3getExtrasTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3androidPrivate Tff7b72= Te6edf3extrasTb4b4b4.Te6edf3getStringTb4b4b4(Ta5d6ff"Ta5d6ffandroidPrivateTa5d6ff"Tb4b4b4)Tb4b4b4;
Te6edf3androidArgument Tff7b72= Te6edf3extrasTb4b4b4.Te6edf3getStringTb4b4b4(Ta5d6ff"Ta5d6ffandroidArgumentTa5d6ff"Tb4b4b4)Tb4b4b4;
Te6edf3serviceEntrypoint Tff7b72= Te6edf3extrasTb4b4b4.Te6edf3getStringTb4b4b4(Ta5d6ff"Ta5d6ffserviceEntrypointTa5d6ff"Tb4b4b4)Tb4b4b4;
Te6edf3pythonName Tff7b72= Te6edf3extrasTb4b4b4.Te6edf3getStringTb4b4b4(Ta5d6ff"Ta5d6ffpythonNameTa5d6ff"Tb4b4b4)Tb4b4b4;
Te6edf3pythonHome Tff7b72= Te6edf3extrasTb4b4b4.Te6edf3getStringTb4b4b4(Ta5d6ff"Ta5d6ffpythonHomeTa5d6ff"Tb4b4b4)Tb4b4b4;
Te6edf3pythonPath Tff7b72= Te6edf3extrasTb4b4b4.Te6edf3getStringTb4b4b4(Ta5d6ff"Ta5d6ffpythonPathTa5d6ff"Tb4b4b4)Tb4b4b4;
Tffa657boolean Te6edf3serviceStartAsForeground Tff7b72= Tb4b4b4(
Te6edf3extrasTb4b4b4.Te6edf3getStringTb4b4b4(Ta5d6ff"Ta5d6ffserviceStartAsForegroundTa5d6ff"Tb4b4b4)Tb4b4b4.Te6edf3equalsTb4b4b4(Ta5d6ff"Ta5d6fftrueTa5d6ff"Tb4b4b4)
Tb4b4b4)Tb4b4b4;
Te6edf3pythonServiceArgument Tff7b72= Te6edf3extrasTb4b4b4.Te6edf3getStringTb4b4b4(Ta5d6ff"Ta5d6ffpythonServiceArgumentTa5d6ff"Tb4b4b4)Tb4b4b4;
Te6edf3pythonThread Tff7b72= Tff7b72new Te6edf3ThreadTb4b4b4(Tff7b72thisTb4b4b4)Tb4b4b4;
Te6edf3pythonThreadTb4b4b4.Te6edf3startTb4b4b4(Tb4b4b4)Tb4b4b4;

Tff7b72if Tb4b4b4(Te6edf3serviceStartAsForegroundTb4b4b4) Tb4b4b4{
Te6edf3doStartForegroundTb4b4b4(Te6edf3extrasTb4b4b4)Tb4b4b4;
Tb4b4b4}

Tff7b72return Te6edf3startTypeTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}

Tff7b72protected Tffa657int Td2a8ffgetServiceIdTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72return T79c0ff1Tb4b4b4;
Tb4b4b4}

Tff7b72protected Te6edf3Intent Td2a8ffgetThisDefaultIntentTb4b4b4(Te6edf3Context Te6edf3ctxTb4b4b4, Te6edf3String Te6edf3pythonServiceArgumentTb4b4b4) Tb4b4b4{
Tff7b72return Tff7b72nullTb4b4b4;
Tb4b4b4}

Tff7b72protected Tffa657void Td2a8ffdoStartForegroundTb4b4b4(Te6edf3Bundle Te6edf3extrasTb4b4b4) Tb4b4b4{
Te6edf3String Te6edf3serviceTitle Tff7b72= Te6edf3extrasTb4b4b4.Te6edf3getStringTb4b4b4(Ta5d6ff"Ta5d6ffserviceTitleTa5d6ff"Tb4b4b4)Tb4b4b4;
Te6edf3String Te6edf3serviceDescription Tff7b72= Te6edf3extrasTb4b4b4.Te6edf3getStringTb4b4b4(Ta5d6ff"Ta5d6ffserviceDescriptionTa5d6ff"Tb4b4b4)Tb4b4b4;
Te6edf3Notification Te6edf3notificationTb4b4b4;
Te6edf3Context Te6edf3context Tff7b72= Te6edf3getApplicationContextTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3Intent Te6edf3contextIntent Tff7b72= Tff7b72new Te6edf3IntentTb4b4b4(Te6edf3contextTb4b4b4, Te6edf3PythonActivityTb4b4b4.Te6edf3classTb4b4b4)Tb4b4b4;
Te6edf3PendingIntent Te6edf3pIntent Tff7b72= Te6edf3PendingIntentTb4b4b4.Te6edf3getActivityTb4b4b4(Te6edf3contextTb4b4b4, T79c0ff0Tb4b4b4, Te6edf3contextIntentTb4b4b4,
Te6edf3PendingIntentTb4b4b4.Te6edf3FLAG_IMMUTABLE Tff7b72| Te6edf3PendingIntentTb4b4b4.Te6edf3FLAG_UPDATE_CURRENTTb4b4b4)Tb4b4b4;

Tff7b72if Tb4b4b4(Te6edf3BuildTb4b4b4.Te6edf3VERSIONTb4b4b4.Te6edf3SDK_INT Tff7b72< Te6edf3BuildTb4b4b4.Te6edf3VERSION_CODESTb4b4b4.Te6edf3OTb4b4b4) Tb4b4b4{
Te6edf3notification Tff7b72= Tff7b72new Te6edf3NotificationTb4b4b4(
Te6edf3contextTb4b4b4.Te6edf3getApplicationInfoTb4b4b4(Tb4b4b4)Tb4b4b4.Te6edf3iconTb4b4b4, Te6edf3serviceTitleTb4b4b4, Te6edf3SystemTb4b4b4.Te6edf3currentTimeMillisTb4b4b4(Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tff7b72try Tb4b4b4{
T8b949e// prevent using NotificationCompat, this saves 100kb on apk
Te6edf3Method Te6edf3func Tff7b72= Te6edf3notificationTb4b4b4.Te6edf3getClassTb4b4b4(Tb4b4b4)Tb4b4b4.Te6edf3getMethodTb4b4b4(
Ta5d6ff"Ta5d6ffsetLatestEventInfoTa5d6ff"Tb4b4b4, Te6edf3ContextTb4b4b4.Te6edf3classTb4b4b4, Te6edf3CharSequenceTb4b4b4.Te6edf3classTb4b4b4,
Te6edf3CharSequenceTb4b4b4.Te6edf3classTb4b4b4, Te6edf3PendingIntentTb4b4b4.Te6edf3classTb4b4b4)Tb4b4b4;
Te6edf3funcTb4b4b4.Te6edf3invokeTb4b4b4(Te6edf3notificationTb4b4b4, Te6edf3contextTb4b4b4, Te6edf3serviceTitleTb4b4b4, Te6edf3serviceDescriptionTb4b4b4, Te6edf3pIntentTb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72catch Tb4b4b4(Te6edf3NoSuchMethodException Tff7b72| Te6edf3IllegalAccessException Tff7b72|
Te6edf3IllegalArgumentException Tff7b72| Te6edf3InvocationTargetException Te6edf3eTb4b4b4) Tb4b4b4{
Tb4b4b4}
Tb4b4b4} Tff7b72else Tb4b4b4{
T8b949e// for android 8+ we need to create our own channel
T8b949e// https://stackoverflow.com/questions/47531742/startforeground-fail-after-upgrade-to-android-8-1
Te6edf3String Te6edf3NOTIFICATION_CHANNEL_ID Tff7b72= Ta5d6ff"Ta5d6ffio.unsigned.sideband.reticulumTa5d6ff"Tb4b4b4;
Te6edf3String Te6edf3channelName Tff7b72= Ta5d6ff"Ta5d6ffBackground ServiceTa5d6ff"Tb4b4b4;
Te6edf3NotificationChannel Te6edf3chan Tff7b72= Tff7b72new Te6edf3NotificationChannelTb4b4b4(Te6edf3NOTIFICATION_CHANNEL_IDTb4b4b4, Te6edf3channelNameTb4b4b4,
Te6edf3NotificationManagerTb4b4b4.Te6edf3IMPORTANCE_NONETb4b4b4)Tb4b4b4;
Te6edf3chanTb4b4b4.Te6edf3setLightColorTb4b4b4(Te6edf3ColorTb4b4b4.Te6edf3BLUETb4b4b4)Tb4b4b4;
Te6edf3chanTb4b4b4.Te6edf3setLockscreenVisibilityTb4b4b4(Te6edf3NotificationTb4b4b4.Te6edf3VISIBILITY_SECRETTb4b4b4)Tb4b4b4;
Te6edf3chanTb4b4b4.Te6edf3setShowBadgeTb4b4b4(Tff7b72falseTb4b4b4)Tb4b4b4;
Te6edf3NotificationManager Te6edf3manager Tff7b72= Tb4b4b4(Te6edf3NotificationManagerTb4b4b4) Te6edf3getSystemServiceTb4b4b4(Te6edf3ContextTb4b4b4.Te6edf3NOTIFICATION_SERVICETb4b4b4)Tb4b4b4;
Te6edf3managerTb4b4b4.Te6edf3createNotificationChannelTb4b4b4(Te6edf3chanTb4b4b4)Tb4b4b4;

Te6edf3NotificationTb4b4b4.Te6edf3Builder Te6edf3builder Tff7b72= Tff7b72new Te6edf3NotificationTb4b4b4.Te6edf3BuilderTb4b4b4(Te6edf3contextTb4b4b4, Te6edf3NOTIFICATION_CHANNEL_IDTb4b4b4)Tb4b4b4;
Te6edf3builderTb4b4b4.Te6edf3setContentTitleTb4b4b4(Ta5d6ff"Ta5d6ffReticulum availableTa5d6ff"Tb4b4b4)Tb4b4b4;
T8b949e// builder.setContentText("Reticulum available");
Te6edf3builderTb4b4b4.Te6edf3setContentIntentTb4b4b4(Te6edf3pIntentTb4b4b4)Tb4b4b4;
T8b949e// builder.setOngoing(true);

Te6edf3String Te6edf3files_path Tff7b72= Te6edf3contextTb4b4b4.Te6edf3getFilesDirTb4b4b4(Tb4b4b4)Tb4b4b4.Te6edf3getPathTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3Bitmap Te6edf3icon_bitmap Tff7b72= Te6edf3BitmapFactoryTb4b4b4.Te6edf3decodeFileTb4b4b4(Te6edf3files_pathTff7b72+Ta5d6ff"Ta5d6ff/app/assets/notification_icon_black.pngTa5d6ff"Tb4b4b4)Tb4b4b4;
Te6edf3Icon Te6edf3service_icon Tff7b72= Te6edf3IconTb4b4b4.Te6edf3createWithBitmapTb4b4b4(Te6edf3icon_bitmapTb4b4b4)Tb4b4b4;
T8b949e// builder.setSmallIcon(context.getApplicationInfo().icon);
Te6edf3builderTb4b4b4.Te6edf3setSmallIconTb4b4b4(Te6edf3service_iconTb4b4b4)Tb4b4b4;
Te6edf3notification Tff7b72= Te6edf3builderTb4b4b4.Te6edf3buildTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Te6edf3startForegroundTb4b4b4(Te6edf3getServiceIdTb4b4b4(Tb4b4b4)Tb4b4b4, Te6edf3notificationTb4b4b4)Tb4b4b4;
Tb4b4b4}

Tf0883e@Override
Tff7b72public Tffa657void Td2a8ffonDestroyTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72superTb4b4b4.Te6edf3onDestroyTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3pythonThread Tff7b72= Tff7b72nullTb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3autoRestartService Tff7b72&Tff7b72& Te6edf3startIntent Tff7b72!Tff7b72= Tff7b72nullTb4b4b4) Tb4b4b4{
Te6edf3LogTb4b4b4.Te6edf3vTb4b4b4(Ta5d6ff"Ta5d6ffpython serviceTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffservice restart requestedTa5d6ff"Tb4b4b4)Tb4b4b4;
Te6edf3startServiceTb4b4b4(Te6edf3startIntentTb4b4b4)Tb4b4b4;
Tb4b4b4}
Te6edf3ProcessTb4b4b4.Te6edf3killProcessTb4b4b4(Te6edf3ProcessTb4b4b4.Te6edf3myPidTb4b4b4(Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tb4b4b4}

T8b949e/**
* Stops the task gracefully when killed.
* Calling stopSelf() will trigger a onDestroy() call from the system.
*/
Tf0883e@Override
Tff7b72public Tffa657void Td2a8ffonTaskRemovedTb4b4b4(Te6edf3Intent Te6edf3rootIntentTb4b4b4) Tb4b4b4{
Tff7b72superTb4b4b4.Te6edf3onTaskRemovedTb4b4b4(Te6edf3rootIntentTb4b4b4)Tb4b4b4;
T8b949e//sticky servcie runtime/restart is managed by the OS. leave it running when app is closed
Tff7b72if Tb4b4b4(Te6edf3startTypeTb4b4b4(Tb4b4b4) Tff7b72!Tff7b72= Te6edf3START_STICKYTb4b4b4) Tb4b4b4{
T8b949e//stopSelf();
Tb4b4b4}
Tb4b4b4}

Tf0883e@Override
Tff7b72public Tffa657void Td2a8ffrunTb4b4b4(Tb4b4b4)Tb4b4b4{
Te6edf3String Te6edf3app_root Tff7b72= Te6edf3getFilesDirTb4b4b4(Tb4b4b4)Tb4b4b4.Te6edf3getAbsolutePathTb4b4b4(Tb4b4b4) Tff7b72+ Ta5d6ff"Ta5d6ff/appTa5d6ff"Tb4b4b4;
Te6edf3File Te6edf3app_root_file Tff7b72= Tff7b72new Te6edf3FileTb4b4b4(Te6edf3app_rootTb4b4b4)Tb4b4b4;
Te6edf3PythonUtilTb4b4b4.Te6edf3loadLibrariesTb4b4b4(Te6edf3app_root_fileTb4b4b4,
Tff7b72new Te6edf3FileTb4b4b4(Te6edf3getApplicationInfoTb4b4b4(Tb4b4b4)Tb4b4b4.Te6edf3nativeLibraryDirTb4b4b4)Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3mService Tff7b72= Tff7b72thisTb4b4b4;
Te6edf3nativeStartTb4b4b4(
Te6edf3androidPrivateTb4b4b4, Te6edf3androidArgumentTb4b4b4,
Te6edf3serviceEntrypointTb4b4b4, Te6edf3pythonNameTb4b4b4,
Te6edf3pythonHomeTb4b4b4, Te6edf3pythonPathTb4b4b4,
Te6edf3pythonServiceArgumentTb4b4b4)Tb4b4b4;
Te6edf3stopSelfTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}

T8b949e// Native part
Tff7b72public Tff7b72static Tff7b72native Tffa657void Td2a8ffnativeStartTb4b4b4(
Te6edf3String Te6edf3androidPrivateTb4b4b4, Te6edf3String Te6edf3androidArgumentTb4b4b4,
Te6edf3String Te6edf3serviceEntrypointTb4b4b4, Te6edf3String Te6edf3pythonNameTb4b4b4,
Te6edf3String Te6edf3pythonHomeTb4b4b4, Te6edf3String Te6edf3pythonPathTb4b4b4,
Te6edf3String Te6edf3pythonServiceArgumentTb4b4b4)Tb4b4b4;
Tb4b4b4}


──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────